package br.com.insight.consultoria.integracao.dao;

import java.util.List;

import org.springframework.dao.DataAccessException;

import br.com.insight.consultoria.entity.Tipo;
import br.com.insight.consultoria.entity.TipoEspecifico;
import br.com.insight.consultoria.erro.exception.InsightConstants;
import br.com.insight.consultoria.erro.exception.InsightDaoException;
import br.com.insight.consultoria.erro.exception.InsightException;
import br.com.insight.consultoria.erro.exception.SistemaException;
import br.com.insight.consultoria.integracao.dao.genericdao.GenericDAO;
import br.com.insight.consultoria.integracao.dao.interfacedao.TipoEspecificoDAO;

public class TipoEspecificoImpDAO extends GenericDAO implements TipoEspecificoDAO{
	
	public List<TipoEspecifico> listarTipoEspecifico(Tipo tipo)  throws InsightException{
		
		try{
		
		return findFiltered(TipoEspecifico.class, "tipo", tipo);
	
		}catch(DataAccessException sql){
			
			throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
		
		}catch(Exception ex){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
			
		}
		
	}
	
	public TipoEspecifico getTipoEspecifico(Long id)  throws InsightException{
		
		try{

		return (TipoEspecifico) getEntityById(TipoEspecifico.class, id);
		
		}catch(DataAccessException sql){
			
			throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
		
		}catch(Exception ex){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
			
		}
	}

}
